package MainPackage;

import com.thoughtworks.selenium.DefaultSelenium;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AddReserveTest {

    private DefaultSelenium selenium;

    public void setUp(String t) {
        selenium = new DefaultSelenium("localhost", 4444, "*chrome", t);
        selenium.start();
        selenium.windowFocus();
        selenium.windowMaximize();
    }

    public String addReserveTest(boolean toRunTest, String shop) throws Exception {
        if (toRunTest) {
///пройти в раздел закупок, и начать создание нового резерва
            selenium.open("/backend/login/loginform");
            selenium.type("//input[@name='login']", "taras.karpenko#" + shop);
            selenium.type("//input[@name='password']", "123456");
            selenium.click("//button[@type='submit']");
            selenium.waitForPageToLoad("30000");
            if ("Wrong login or password".equals(selenium.getText("//p"))) {
                return ("NotSuccesfull WP");
            }
            selenium.click("link=Buying");
            selenium.waitForPageToLoad("30000");
            selenium.click("link=Add Reserve");
            selenium.waitForPageToLoad("30000");
///выбрать вендора первого в списке вендоров данного магазина
            String[] vendor_select_labels = selenium.getSelectOptions("reserve_master__vendor_master_id"); //вытягивает всех из селекта
            selenium.select("reserve_master__vendor_master_id", vendor_select_labels[1]); //выбирает того что с индексом 1
///Указать сегодняшнюю датту начала действия резерва
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String s = sdf.format(new Date());
            selenium.click("name=reserve_master__valid_from");
            selenium.select("class=ui-datepicker-year", s.substring(0, 4));
            switch (s.substring(4, 6)) {
                case "01":
                    selenium.select("class=ui-datepicker-month", "Jan");
                    break;
                case "02":
                    selenium.select("class=ui-datepicker-month", "Feb");
                    break;
                case "03":
                    selenium.select("class=ui-datepicker-month", "Mar");
                    break;
                case "04":
                    selenium.select("class=ui-datepicker-month", "Apr");
                    break;
                case "05":
                    selenium.select("class=ui-datepicker-month", "May");
                    break;
                case "06":
                    selenium.select("class=ui-datepicker-month", "Jun");
                    break;
                case "07":
                    selenium.select("class=ui-datepicker-month", "Jul");
                    break;
                case "08":
                    selenium.select("class=ui-datepicker-month", "Aug");
                    break;
                case "09":
                    selenium.select("class=ui-datepicker-month", "Sep");
                    break;
                case "10":
                    selenium.select("class=ui-datepicker-month", "Oct");
                    break;
                case "11":
                    selenium.select("class=ui-datepicker-month", "Nov");
                    break;
                case "12":
                    selenium.select("class=ui-datepicker-month", "Dec");
                    break;
            }
            selenium.click("link=" + s.substring(6, 8));
///Указать  датту окончания резерва 1 января 2022 и сохранить
            selenium.click("name=reserve_master__expire_at");
            selenium.select("class=ui-datepicker-year", "2022");
            selenium.select("class=ui-datepicker-month", "Jan");
            selenium.click("link=1");
            selenium.click("//button[@type='submit']");
///Заполнить резерв товарами - отобразить список товаров
            selenium.click("link=Buying");
            selenium.waitForPageToLoad("30000");
            selenium.click("css=th.sortable.asc");
            Thread.sleep(1000);
            selenium.click("//tr[1]/td[10]/a[2]/img");
            selenium.waitForPageToLoad("30000");
            switch (shop) {
                case "arena":
                    selenium.select("name=art_brand_master_id", "label=Arena");
                    break;
                case "camuto":
                    selenium.select("name=art_brand_master_id", "label=Vince Camuto");
                    break;
                case "garcia":
                    selenium.select("name=art_brand_master_id", "label=Garcia Jeans");
                    break;
            }
            Thread.sleep(2000);
            selenium.click("//button[@name='search']");
            Thread.sleep(8000);
/// Заполнить таблицу данными кол-во, дней до поставки, цена (по каждому размеру)
            int i = 1;
            int int_sizes_count;
            boolean no_art_added = true;
            while (no_art_added) {
                selenium.click("//table[@id='search_result']/tbody/tr[" + i + "]/td[8]/a");
                Thread.sleep(1000);
                Number numb_sizes_count = selenium.getXpathCount("//input[@name='supply_days']");
                int_sizes_count = numb_sizes_count.intValue();
                if (int_sizes_count <= 1) {
                    i++;
                } else {
                    while (int_sizes_count >= 1) {
                        selenium.type("//tr[" + int_sizes_count + "]/td[8]/input", "2");
                        selenium.type("//tr[" + int_sizes_count + "]/td[9]/input", "20");
                        selenium.type("//tr[" + int_sizes_count + "]/td[10]/input", "100");
                        Thread.sleep(200);
                        int_sizes_count--;
                    }
                    no_art_added = false;
                }
            }
            selenium.click("name=add-products");
            selenium.click("name=save-reserve");
            Thread.sleep(1500);
            Number numb_divs_count = selenium.getXpathCount("//html/body/div");
            int int_divs_count = numb_divs_count.intValue() - 1;
            if (!"Reserve order successfully saved".equals(selenium.getText("xpath=(//html/body/div[" + int_divs_count + "]/div[2])"))) {
                return ("NotSuccesfull NSR");
            }
            selenium.click("xpath=(//div[" + int_divs_count + "]/div[3]/div/button)");
            Thread.sleep(1500);
            selenium.click("link=Reserve");
            selenium.waitForPageToLoad("30000");
            selenium.click("css=th.sortable.asc");
            Thread.sleep(1500);
            selenium.click("css=a[title=\"View Reserve Details\"] > img");
            Thread.sleep(3000);
            selenium.waitForPageToLoad("30000");
            selenium.click("//div[@id='reserve_master_info']/div[8]/button");
            selenium.waitForPageToLoad("30000");
            Thread.sleep(3000);
            selenium.click("link=Reserve");
            selenium.waitForPageToLoad("30000");
            Thread.sleep(3000);
            selenium.click("css=th.sortable.asc");
            Thread.sleep(3000);
            if (!"Затверджений".equals(selenium.getTable("css=table.tablesorter.1.3"))) {
                return ("NotSuccesfull NA");
            }
            if (selenium.isTextPresent(shop)) {
                return ("Succesfull");
            } else {
                return ("NotSuccesfull");
            }

        } else {
            return ("Not run");
        }
    }

    public void tearDown() throws Exception {
        selenium.stop();
    }
}
